do mechanical engineers need to know programming